/*
 * @Copyright: 2016 www.yyfax.com Inc. All rights reserved.
 */
package com.yyfax.pay.order.data.dao;

import com.yyfax.framework.dao.BaseDao;
import com.yyfax.pay.order.model.po.UserAuthPO;
import com.yyfax.pay.vo.depository.UserRegisterReq;

/**
 * 用户认证信息持久化接口
 *
 * @author buyi
 * @date 2017-04-12 11:09:15
 * @since 1.0.0
 */
public interface UserAuthDao extends BaseDao<UserAuthPO, Integer> {

	/**
	 * 根据主键获取实体
	 *
	 * @param id 自增主键
	 * @param merchantCode 商户编号(为分表预留参数)
	 * @return UserAuthPO
	 * @throws Exception 异常
	 * @author jiangmy
	 * @date 2017-04-12 11:09:15
	 * @since 1.0.0
	 */
	UserAuthPO selectByIdAndMerchantCode(int id, String merchantCode) throws Exception;

	/**
	 * 查询用户实名信息
	 *
	 * @param userId 用户id
	 * @param merchantCode 商户编号
	 * @return UserAuthPO
	 * @author buyi
	 * @date 2017-04-17 10:19:17
	 * @since v1.0.0
	 */
	UserAuthPO selectByUserIdAndMerchantCode(String userId, String merchantCode);

	/**
	 * 查询用户实名信息
	 *
	 * @param merchantCode 商户编号
	 * @param idNo 身份证号（加密）
	 * @return UserAuthPO
	 * @author buyi
	 * @date 2017-04-19 11:48:41
	 * @since v1.0.0
	 */
	UserAuthPO selectByMerchanCodeAndIdNo(String merchantCode, String idNo);

	/**
	 * 通过四要素(身份证号、手机号、卡号、姓名) 验证用户是否开户成功
	 *
	 * @param merchantCode 商户号
	 * @param userRegisterReq 开户请求参数
	 * @return UserAuthPO
	 * @throws Throwable 加密转换异常
	 * @author liangqm,buyi
	 * @date 2018-01-10 10:15:06
	 * @since v2.0.7
	 */	
	public UserAuthPO selectByFourElements(String merchantCode, String userId, String name, String idNoCip, String cardNoCip, String phone);
}
